package com.xiuxia.bopicturebackend.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.xiuxia.bopicturebackend.model.dto.spaceuser.SpaceUserAddRequestDTO;
import com.xiuxia.bopicturebackend.model.dto.spaceuser.SpaceUserQueryRequestDTO;
import com.xiuxia.bopicturebackend.model.entity.SpaceUser;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xiuxia.bopicturebackend.model.vo.spaceuser.SpaceUserVO;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @author 17732
 * @description 针对表【space_user(空间用户关联)】的数据库操作Service
 * @createDate 2025-07-21 11:15:19
 */
public interface SpaceUserService extends IService<SpaceUser> {

    /**
     * 添加空间用户
     *
     * @param spaceUserAddRequestDTO 添加空间用户请求参数
     * @return id
     */
    Long addSpaceUser(SpaceUserAddRequestDTO spaceUserAddRequestDTO);

    /**
     * 校验空间用户参数
     *
     * @param spaceUser 空间用户
     * @param add       是否为创建
     */
    void validSpaceUser(SpaceUser spaceUser, boolean add);

    /**
     * 获取查询条件
     *
     * @param spaceUserQueryRequest 查询条件
     * @return 查询条件
     */
    QueryWrapper<SpaceUser> getQueryWrapper(SpaceUserQueryRequestDTO spaceUserQueryRequest);

    /**
     * 获取空间用户视图
     *
     * @param spaceUser 空间用户
     * @param request   请求
     * @return 空间用户视图
     */
    SpaceUserVO getSpaceUserVO(SpaceUser spaceUser, HttpServletRequest request);

    /**
     * 获取空间用户视图列表
     *
     * @param spaceUserList 空间用户列表
     * @return 空间用户视图列表
     */
    List<SpaceUserVO> getSpaceUserVOList(List<SpaceUser> spaceUserList);

    /**
     * 删除空间用户
     * @param spaceId
     * @return
     */
    boolean removeBySpaceId(Long spaceId);
}
